//引入数据模型
const { usersModel } = require('../models/usersModel.js');

//引入jsonwebtoken
const jwt = require('jsonwebtoken');
//登录
module.exports.login = async function(req, res, next) {
        //接收前端发送的数据
        const data = req.body; //post获取数据，用body
        // console.log('前端发送的数据：', data);
        //验证用户是否登录成功，实际就是在数据集合中查询是否存在
        const result = await usersModel.find(data);
        if (result.length > 0) {
            //生成token
            const token = jwt.sign({
                    _id: result[0]._id
                }, //保存的用户信息，必须放入语法是对象
                'hello', //密钥，任意字符串
                { expiresIn: 10 } //token有效期，纯数字单位默认为s，字符串‘1h’代表1小时
            );

            //后端返回数据给前端
            res.send({
                message: '登录成功',
                code: 1,
                token: 'Bearer ' + token
            });
        } else {
            res.send({
                message: '登录失败',
                code: 0
            });
        }

    }
    //注册
module.exports.register = async function(req, res, next) {
    const data = req.body;
    const result = await usersModel.find({ username: data.username });
    if (result.length > 0) {
        res.send({
            message: '注册失败，该用户已存在',
            code: 0
        })
    } else {
        usersModel.create(data);
        res.send({
            message: '注册成功',
            code: 1

        })
    }
}

//通过token获取用户信息
module.exports.getUserInfo = async function(req, res) {
    //获取请求头中的token
    const tokenBearer = req.get('Authorization');
    if (tokenBearer) {
        const token = tokenBearer.split(' ')[1];
        //解码token：拿到token中保存的用户信息
        const { _id } = jwt.verify(token, 'hello');
        if (_id) {
            const result = await usersModel.find({ _id });
            res.send({
                code: 1,
                message: '用户信息获取成功',
                result: result[0]
            });
            return;
        }
    }
    res.send({
        code: 0,
        message: '用户信息获取失败'
    })
}